from flask import Response, jsonify, Flask, request, Blueprint,url_for
from configs import *
from modules.Tables import *
from sqlalchemy import func

# 创建蓝图，对应的register目录（激活操作视图）
log_view = Blueprint('log_view', __name__)

# 日志信息展示
@log_view.route('/log_data', methods=['GET'])
@jwt_required()
@jwt_required_with_refresh
def log_data():

    # 获取分页参数
    page = request.args.get('page', default=1, type=int)  # 当前页码
    per_page = request.args.get('per_page', default=15, type=int)  # 每页显示条目数量
    level = request.args.get('level')  # 日志等级

    # 定义筛选列表
    filters = []
    # 当筛选条件存在时添加到列表
    if level:
        filters.append(Log.level == level)

    # 构建查询条件
    query = and_(*filters) if filters else True  # 如果 filters 为空，默认条件为 True

    # 查询主区域点并进行分页
    pagination = db.session.query(Log).filter(query).paginate(page=page, per_page=per_page, error_out=False)

    # 获取分页后的数据
    data_list = [
        {
            'id': item.id,
            'user_id': item.user_name,
            'ip_address': item.ip_address,
            'level': item.level,
            'message': item.message,
            'module': item.module,
            'method': item.method,
            'url': item.url,
            'request_data': item.request_data if item.response_data else item.stack_trace,
            'response_data': item.response_data,
            'error_code': item.error_code,
            # 'stack_trace':item.stack_trace,
            'hostname':item.hostname,
            'context':item.context,
            'created_at': format_datetime(item.created_at),
        }

        for item in pagination.items
    ]


    # 构造返回结果，包括分页信息
    response = {
        'code': 200,
        'data': data_list,
        'pagination': {
            'current_page': pagination.page,
            'total_pages': pagination.pages,
            'total_items': pagination.total,
            'per_page': pagination.per_page
        }
    }

    return jsonify({'code':200,'data':response})




